package com.dog.basics.service.sys;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dog.basics.bean.dto.admin.sys.SysUserDto;
import com.dog.basics.bean.dto.admin.sys.SysUserEditDto;
import com.dog.basics.bean.dto.admin.sys.SysUserSaveDto;
import com.dog.basics.bean.model.sys.SysUser;
import com.dog.basics.bean.vo.admin.sys.SysUserPageVo;
import com.dog.basics.common.util.PageParam;
import com.dog.basics.common.util.R;


/**
 * 系统用户
 * @author dog
 */
public interface SysUserService extends IService<SysUser> {

	/**
	 * 根据用户id获取用户信息
	 *
	 * @param userId
	 * @return
	 */
	SysUser getSysUserById(Long userId);

	/**
	 * 修改密码
	 *
	 * @param userId      用户ID
	 * @param newPassword 新密码
	 */
	void updatePasswordByUserId(Long userId, String newPassword);

	/**
	 * 分页获取用户信息
	 *
	 * @param page
	 * @param dto
	 * @return guonh 2020年2月4日
	 */
	IPage<SysUserPageVo> getSysUserPage(PageParam<SysUser> page, SysUserDto dto);

	/**
	 * 保存用户与用户角色关系
	 *
	 * @param sysUserSaveDto
	 */
	void saveUserAndUserRole(SysUserSaveDto sysUserSaveDto);

	/**
	 * 更新用户与用户角色关系
	 *
	 * @param sysUserEdit
	 */
	R<Boolean> updateUserAndUserRole(SysUserEditDto sysUserEdit);

	/**
	 * 根据用户id 批量删除用户
	 *
	 * @param userIds
	 */
	void deleteBatch(Long[] userIds);

	/**
	 * 重置密码
	 *
	 * @param sysUserId
	 * @return guonh 2020年2月10日
	 */
	Boolean editResetPassword(Long sysUserId);

	/**
	 * 冻结 - 解封账户
	 *
	 * @param sysUserId
	 * @return guonh 2020年2月10日
	 */
	Boolean editFrozenAccounts(Long sysUserId);

}
